package ninja;

import java.util.ArrayList;

import java.util.Iterator;

/**
 * Write a description of class Maitre here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Sensei
{
    private int niveau; // Influence les primes et difficultés des missions données
    //private Ninja eleve;// un eleve n'a qu'un seul maitre et un maitre qu'un seul eleve
    protected ArrayList <Ninja> liste_eleves;
    
    private ArrayList<Potion> potions;
    private int argent;

    
    public Sensei(int niveau)
    {
        this.niveau = niveau;
        //this.eleve = null;
        liste_eleves =  new ArrayList<Ninja>();
        potions =  new ArrayList<Potion>();
    }
    
    //*
    public void fabriquerPotion(){
    	potions.add(new Potion(100));
    }
    public void fabriquerPotion(int nombre_de_potion){
    	for(int i=0; i< nombre_de_potion; i++){
    		potions.add(new Potion(100));
    	}
    }
	public ArrayList<Potion> getPotions() {
		return potions;
	}
	public void setPotions(ArrayList<Potion> potions) {
		this.potions = potions;
	}
    public int getArgent() {
		return argent;
	}

	public void setArgent(int argent) {
		this.argent = argent;
	}
	
    //*/
    


	public void donnerMission(){
        Iterator<Ninja> it = liste_eleves.iterator();
    	//if(eleve != null)
        while(it.hasNext())
        {
            int base_prime = 100;
            it.next().effectuerMission(niveau,niveau*base_prime);
        }
    }
    
    public ArrayList<Ninja> getListe(){
    	return liste_eleves;
    }
    
    



	
	public void recruter(Ninja n)
    {
    	boolean bool = searchEleve(n);
        if(/*this.eleve == null*/bool && n.getMaitre() == null)
        {
            liste_eleves.add(n);
            n.setMaitre(this);
        }
    }

	public boolean searchEleve(Ninja n) {
		boolean bool = true;
    	Iterator<Ninja> it = liste_eleves.iterator();
    	//if(eleve != null)
        while(it.hasNext())
        {
        	if(it.next().getNom().compareTo(n.getNom()) == 0) bool = false;
        }
		return bool;
	}
}
